import requests

# 不带参get请求,timeout请求超时的时间设置
# req = requests.get('https://www.douban.com/', timeout = 2.5)
# print(req.status_code)
# print(req.text)
# 带参get请求
req1 = requests.get('https://www.douban.com/', params={'q': 'python', 'cat': '1001'})
print(req1.status_code)
print(req1.url)
# print(req1.content)
# print(req1.json())
# json
# req2 = requests.get('https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20%3D%202151330&format=json')
# print(req2.json())
# 需要传入HTTP Header时，我们传入一个dict作为headers参数
# req3 = requests.get('https://www.douban.com/', headers={'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit'})
# print(req3.content)
# POST请求, 把post()方法替换为put()，delete()等，就可以以PUT或DELETE方式请求资源。

# dic = {'form_email': 'abc@example.com', 'form_password': '123456'}
# req4 = requests.post('https://accounts.douban.com/login', data=dic)
# print(req4.status_code)

# 上传文件
# upload_files = {'file': open('1234.png', 'r')}
# requests.post('url', files = upload_files)

# 如果要传递JSON数据，可以直接传入json参数：
# params = {'key': 'value'}
# r = requests.post('url', json=params) # 内部自动序列化为JSON

# 用chardet检测编码
import chardet
print(chardet.detect(b'Hello, world!'))
data = '离离原上草，一岁一枯荣'.encode('gbk')
print(chardet.detect(data))
data2 = '离离原上草，一岁一枯荣'.encode('utf-8')
print(chardet.detect(data2))

# 获取系统信息的另一个好办法是使用psutil
import psutil
# print('cpu 逻辑数量 ', psutil.cpu_count())
# print('CPU物理核心 ', psutil.cpu_count(logical=False))
# print('CPU的用户／系统／空闲时间：', psutil.cpu_times())
# CPU使用率，每秒刷新一次
# for x in range(10):
#     print(psutil.cpu_percent(interval=1, percpu=True))
# 物理内存
print(psutil.virtual_memory())
# 交换内存
print(psutil.swap_memory())
# 磁盘分区信息
print(psutil.disk_partitions())
# 磁盘使用情况
print(psutil.disk_usage('/'))
# 磁盘IO
print(psutil.disk_io_counters())
# 获取网络读写字节／包的个数
print(psutil.net_io_counters())
# 获取网络接口信息
print(psutil.net_if_addrs())
# 获取网络接口状态
print(psutil.net_if_stats())
# 获取当前网络连接信息, 获取网络连接信息需要root权限，这种情况下，可以退出Python交互环境，用sudo重新启动
# print(psutil.net_connections())
# 所有进程ID
print(psutil.pids())
# 进程名称
p = psutil.Process(2277)
# 进程名称
print(p.name())
# 进程exe路径
print(p.exe())
# 进程工作目录
print(p.cwd())
# 进程启动的命令行
print(p.cmdline())
# 父进程ID
print(p.ppid())
# 父进程
print(p.parent())
# 子进程列表
print(p.children())
# 进程状态
print(p.status())
# 进程用户名
print(p.username())
# 进程创建时间
print(p.create_time())
# 进程终端
print(p.terminate())
# 进程使用的CPU时间
print(p.cpu_times())
# 进程使用的内存
print(p.memory_info())
# 进程打开的文件
print(p.open_files())
# 进程相关网络连接
print(p.connections())
# 进程的线程数量
print(p.num_threads())
# 所有线程信息
# print(p.threads())
# 进程环境变量
print(p.environ())
# 结束进程
print(p.terminate())